home *** CD-ROM | disk | FTP | other *** search
- FixDisk V1.0
- (C) Copyright Werner Gunther 1989
- Freeware
- USE THIS PROGRAM AT YOUR OWN RISK
-
-
- FixDisk is a program to recover as much as possible from a defective disk.
- I don't claim it is better than 'Diskdoctor' or 'DiskSalv', but it has some
- features the others don't have: first of all it can recover damaged
- (unreadable) tracks, it has functions to check file integrity, to check the
- directory structure and functions to undelete, copy or show (even
- defective) files, fix corrupted directory pointers etc. Everything can be
- selected with an intuition interface, so everyone can determine what action
- should be take place by himself.
- Now the bad news: The program does not keep track of 'loose blocks' i.e.
- files without a file header like DiskSalv. It does only work with disks /
- partitions using a maximum of 4063 blocks. It may work with larger disks
- too, but I don't have a hard disk, so I couldn't test it out. Disks with
- more than 4063 blocks are rejected by the program. You may force the
- program to accept <48 MB partitions adding 'DOOM' to the command line (i.e.
- 'FixDisk doom'). As I said before, it has not been tested and should only
- be used if anything else failed, and you're just about to format the
- partition.
-
- USAGE:
-
- After starting FixDisk from Cli or Workbench you will see a set of gadgets
- with the available drives on the top of the window. Choose the desired
- drive by clicking it's gadget. If the choosen drive is a 3.5" or a 5.25"
- drive you will be asked to insert a disk. Now the program starts to read in
- the disk, cylinder by cylinder searching for file/directory headers. This
- may take a while, please be patient. Beside read errors you may get some
- other messages at this point:
- Block 0 has to start with 'DOS' or 'KICK'. If it does not, you are asked
- if you want to fix it.
- The program couldn't find the root block and FixDisk wants to build a new
- one.
- The disk isn't validated, the program is going to validate it.
- There is no root block and no file header on the disk, the disk is
- probably a custom disk (or the Kickstart disk). FixDisk won't check
- anything (and won't let you check, change or fix anything) except read
- errors.
-
- You may press break (CTRL-C) anytime if you want to abort this operation.
- When the disk has been examined, you'll get a file requester on the left
- half of the window. The first column shows the 'key' (the block number
- where the file header has been found), followed by 'DEL' for deleted files
- or '-->', followed by the filename. Red (Color 3) entries are directories.
- Click on the filename to select it or shift-click for multiple selections.
- Doubleclick a directory to enter the directory.
-
- The right half of the window is filled with 17 Gadgets. As you will notice
- some of them are disabled at startup. These are gadgets that will write
- onto the disk. To enable them you have to choose 'Write enable' from the
- 'Miscellaneous' menu (there is only one menu anyway).
-
- THE GADGETS:
-
- Directory - Parent
- This gadget is part of the file requester. The requester will show the
- files from the parent directory.
-
- Directory - Root
- Same as above, but steps to the root directory.
-
- Show - Selected
- Shows a file in Hex or ASCII. Like all other commands, the file is
- processed without using DOS, but each sector (block) is read in, checked
- and displayed. It works exactly the same way 'Copy' (see below) would do,
- so you can use this function to see, what exactly can be recovered from a
- defective file. If the file is on a 'Standard Filesystem' (non FFS) disk,
- you will be asked where the program should take the file links from. Each
- block that belongs to a file is listed in the file header block (and in
- one or more 'file list blocks' if the file is too large). On the 'Standard
- Filesystem' each data block has a pointer to the next block belonging to
- the same file, too. So we have two ways to determine how the file is build
- up: using the links listed in the file header, or using the inter-block
- links. Anyway, it is much safer if you select the file header links, if
- only one block is wrong, you'll get a lot of rubbish using the inter-block
- links.
-
- Check Files - Selected
- This function checks the selected files. With the Standard Filesystem it
- is very easy to determine if a file is ok or defective, as each data block
- has a checksum, a pointer to the file header, pointer to the next block
- etc. This is not the case with the FFS and there is no way to determine if
- a given data block really belongs to that file. So, even if the file
- passes the test, it may still be corrupted.
-
- Check Files - Deleted
- Checks only deleted files, so you can see which one can be undeleted.
-
- Check Files - All
- Checks all files.
-
- Undelete Files - Selected
- The first thing this function does, is calling 'check file'. If the file
- seems to be ok, the file header is inserted into the hash chain of it's
- parent directory and the bitmap will be updated, but the 'Bitmap Flag'
- will change to 'FALSE', just to make sure the disk is going to be
- validated after this operation.
-
- Undelete Files - All
- Tries to undelete all deleted files.
-
- Copy Files - Selected
- Works like 'Show' (see above). You'll be asked to enter a output
- path/directory, if the directory gets full, you may enter a new path. If a
- given file already exists in the destination directory, the program will
- append '.2' to the filename (if '.2' exits too, you'll get '.2.2', don't
- tell me this is dumb, I know that already). Like 'Check File' you may get
- some error messages while the program is working. If a block doesn't seem
- to belong to a given file, you'll be asked to 'SKIP IGNORE ABORT'. 'Skip'
- means, the damaged block won't be copied, 'Ignore' the block will be
- copied, no matter what is on that block, 'Abort' leaves 'Copy Files'.
- Protection bits are preserved, dates are not.
-
- Copy Files - All
- Copies the entire disk, trying to recover as much as possible.
-
- Wipe Files - Selected
- This function clears the file header of a deleted file. Utilities like
- 'Diskdoctor', 'DiskSalv' will try to recover all files, even if they have
- been deleted. If you don't want some files to pop up again using one of
- the programs above, you may use this function. Be warned: after this
- operation you'll have to use a disk-monitor/sector-editor to get the data
- back.
-
- Wipe Files - All
- Purges all deleted files.
-
- Delete - Selected
- Deletes a file, i.e. the file header will be taken out of its hash chain,
- and the bitmap updated. The 'Bitmap Flag' will be set to 'FALSE' as in
- 'Undelete' (see above). This function even works if the DOS delete
- does return an error.
-
- Delete - Faulty
- Checks all files and deletes those with errors. The program may ask you
- before deleting a file, if you wish.
-
- Info - Device
- Returns some information about the selected device.
-
- Validate - Disk
- This is not the Amiga Validator, but my own. The main difference between
- them is that this one tries to repair the disk structure. You may get some
- error reports: Loops in a hash chain, wrong or unreadable file headers,
- checksum errors or 'key already set', two files claiming to own the
- same data block. The usually action that takes place, is to ask you if the
- corrupted file may be deleted. You may check what exactly was wrong using
- 'Show' and 'Check file' afterwards.
-
- Recover - Track
- This function tries to get as much as possible from a defective track. It
- uses the RAWREAD command from the trackdisk.device and therefore works
- with the trackdisk.device only. What it actually does, is to RAWREAD the
- track into a buffer, search the syncs, and decode the sector (this may
- take some seconds, the routine to decode isn't very fast). If a sector
- sync is missing, the program tries to determine where the sector has to
- start, this works sometimes, but is usually wrong. When the track has been
- decoded, you'll get a window displaying: the number of the sector (1-11),
- the first 4 longwords of that sector, if the checksum is OK or BAD, and if
- that block is ALLOCated or FREE. If an entries is red (color 3), the
- sector didn't have a sync. If, instead of the first few bytes, you get
- 'unreadable', the program couldn't even work out where the sector should
- have been. If you are not satisfied with the result, you may click
- 'RETRY', this will restart the procedure and usually gives a different
- result (if the track has a 'hard' error, i.e. a damaged surface). If you
- think the result is good (or good enough) click on 'WRITE', this will
- format the track and write those sectors back. It may happen that the
- track can't be formatted. Click 'RETRY' several times, the defective part
- of the track may 'fall' into the gap at some point. If this doesn't seem
- to work, pull out the disk and insert a new, EMPTY!, even unformatted
- disk, and write the track on this disk. Now comes the tricky part: back up
- the original disk, and copy the recovered track to the backup with
- DiskZap/DiskX/Sectorama etc. Hmmm, no, much too complicate, the Amiga is
- a multitasking machine! Backup the disk WHILE FixDisk is running, insert
- the backup into the drive you have selected and click 'RETRY'.
-
- THE MENU
-
- There are actually only two menuitems:
-
- Ignore readerrors:
- Usually you get a requester asking 'RETRY' 'IGNORE' if an error occurs.
- This may be very annoying if the disk has a lot of defective tracks. This
- item will stop that requester popping up.
- It has also a second function: If you are using the 'Copy' function, the
- program will stop every time a file seems to be damaged, and asks what
- action should be taken. With 'Ignore readerrors' on, errors are just
- listed, but the program will act as if you have choosen 'IGNORE'.
-
- Write Enable
- Enables those gadgets that will write onto the disk.
-
- That's all. Well, almost. The program has about 80 requesters, some
- of them have not been explained, but they should be self-explanatory.
-
- Send flames, bug reports, requests to
- G35@DHDURZ1.BITNET
-
- Werner Gunther
- Wingertspfad 12
- D 6900 Heidelberg (FRG)
-